package create_pattern.singleton_pattern;

/**
 * @author fly
 * @data 2022-04-07
 * 单例模式-懒汉模式
 */
public class LazySingleton {

    /**
     * volatile 确保对象数据一致性和有序性
     */
    private volatile static LazySingleton lazySingleton = null;

    private LazySingleton() {
    }

    public static LazySingleton getLazySingleton() {
        if (null == lazySingleton) {
            // double-check-Locking
            synchronized (LazySingleton.class) {
                if (null == lazySingleton) {
                    return new LazySingleton();
                }
            }
        }
        return lazySingleton;
    }
}